In many work scenarios, it is desirable for a plurality of workers to collaborate on a project to find a solution to a problem. For example, in the context of software development, it is often desirable for a plurality of developers to review the source code for a particularly difficult part of a program. With such collaboration, the software defects are often discovered faster than if the individuals had read the code by themselves.
Collaboration can be achieved in many different ways. One possible way is to physically gather all of the people so that they are present and working together in the same location. With workers spread throughout the country and throughout the world, however, this is often not practical. Collaboration may also be achieved electronically. With tools such as instant messaging, email, and electronic file transfer, workers can collaborate by sending messages and files to each other. For example, a developer may ask a colleague to review a piece of source code under a source code control system that both can access and send back any comments about the piece of source code. While these tools do enable workers to communicate and exchange ideas, they do not truly enable the workers to collaborate in the full sense of the word. Each worker cannot see what portion of code the other is reviewing while he is doing it, and there are often significant delays between the request for information/advice and the receipt thereof. Thus, the collaboration is not very interactive.
To facilitate more interactive collaboration, some computing tools have been developed in recent years that allow multiple parties using multiple machines (e.g. computers) to view a file at the same time. With such tools, a file may be opened for display by one of the workers, and may be viewed by all of the other workers. The worker who opened the file for display can use a pointing or highlighting device such as a mouse to signal to others a location on a displayed portion of the file. Some of these tools even allow different workers to take turns to open and display a file and direct others' attention to a displayed portion of the file. Typically, this is done by conveying an image on a computer controlled by one worker to computers controlled by other workers. A disadvantage of these tools is that everyone has to look at the same portion of the file at the same time; if a worker wants to look at something else, either he has to take over as the leader (which forces everyone else to look at what he wants to look at) or he can look at the other thing separately and miss out on the current discussion. If he misses on the discussion, he cannot go back to see what was discussed by the other workers.
Because of these limitations, the existing tools are not as fully interactive and collaborative as would be desired. As a result, an improved collaboration mechanism is needed.